COMP3151/9154 Foundations of Concurrency
Term 2, 2022

Spec (Assignment 2)

Table of Contents

This assignment is worth 15% and is due before the Friday of Week 10, COB (5th August, 6PM Sydney Time). Late submissions are accepted up to five days after the deadline, but at a penalty: 5% off your total mark per day.

This assignment is to be done in pairs. Individual submissions will be accepted but are highly discouraged.

1 Language Selection

This assignment is an open-ended research task where you are asked to independently investigate modern concurrent programming styles in a modern programming language of your choice.

Examples of languages you may investigate include:

  • Scala (with Akka)
  • Kotlin (with Akka)
  • Java 11 (with Akka)
  • Elixir
  • Erlang
  • Go
  • Dart
  • Rust
  • Swift
  • Clojure (with STM)
  • Haskell (with STM)
  • Julia (Data Parallelism)

You may choose other language or library combinations, subject to the approval of the lecturer. Ask a private question on Ed summarising the concurrency constructs you wish to investigate.

Many legacy languages such as JavaScript, Python, C and C++ do not support concurrency beyond very basic locking constructs, or they suffer from other significant limitations in concurrent programming. In general, requests to cover concurrent programming in these languages will not be approved.

Once you have decided on a language to investigate, one member of your pair should make a private Ed thread with the language you chose.

If possible, do this by the end of week 8. Johannes will chase up anyone who hasn't done so by week 9.

2 Task Description

You must select a well-known concurrency program or algorithm that demonstrates clearly the style of concurrent programming you have chosen to investigate.

The problem you select may be one of the ones covered in class or in homework, or some other problem in concurrent programming.

Thoroughly research the given problem and examine solutions presented in academic literature and elsewhere. Also thoroughly research the concurrency model you have selected, and implement this algorithm or problem in your chosen language. While you do your research, maintain a list of sources (using a standard referencing format such as ACM or IEEE).

Then, create a 10 minute video (maximum length 15 minutes) that covers:

  • The problem you are solving
  • The concurrency constructs in the language you have selected.
  • A demonstration of your solution, and how the concurrency constructs of the selected language help with this solution.

The purpose of the video is to be pedagogical. You will be evaluated on how well your video uses the concurrency problem to motivate and explain the style of concurrent programming you are investigating.

Make your video clear and concise. To save time, it may be helpful to select a problem that has already been covered in class, as this means you can spend less time explaining the problem. You may assume that the audience of the video has already been exposed to the concurrency concepts discussed in class.

You do not need to spend a significant amount of time discussing syntax of the given programming language, or giving a tutorial in programming in the given language in general. Rather, just give a taste of concurrent programming in the given language. It is probable that your selected language will support a number of different concurrent programming styles. You only need to select the style that best demonstrates your problem solution.

The video should be posted as an unlisted video on YouTube (if there is a problem with this service, email Johannes), and a hyperlink provided in your Assignment 2 submission. The duration of the video should be approximately 10 minutes, and videos of a length longer than 15 minutes will only be evaluated on the first 15 minutes.

You may not use artificial means (speeding up the video) to fit your video content into the allotted time. If your video is too long, cut stuff out.

You must present your content in a clear, methodical, structured way.

Both pair members should be heard in the video. For example, one pair member could introduce the problem, and another pair member could discuss the solution.

You may use slides, screen captures, whiteboard videos or any other teaching or video props. You may submit supplementary files along with your video and your problem solution, and this data will be made available to viewers of your video.

You must ensure that the technical quality of your video is sufficient to make it watchable and enjoyable. Professional quality recording is not expected, but please try to make sure all audio is recorded in a quiet environment and that volume levels are normalised across the video.

3 Assessment

You will be assessed on:

  • How well your problem demonstrates the concurrent programming model in your chosen language.
  • How well you demonstrate your expertise in concurrent programming in that language.
  • How thoroughly you research your chosen language and problem.
  • (5% of the mark for) the technical quality of your video. Usually only deducted if the quality becomes an obstacle.

After the due date for the assignment, all students will be required to assess approximately 2 other student videos. These peer assessments will be qualitative – you will not award marks, but instead offer comments and and answer some evaluation questions for each video. These assessments will be used to assist the lecturer in determining the final grade.

This peer assessment will be due on Monday of Week 11. It should not take more than 30 minutes of your time. 10% of your mark is awarded for completing this peer assessment.

4 Deliverables

assignment2.txt
A text file containing:
  • A hyperlink to the video on YouTube.
  • A list of your sources in a standard citation format.
assignment2.zip
A ZIP format archive containing the code for your problem solution and any other supplementary material you wish to include for viewers of your video.
partner.txt
A file with a single line on the format z<digits>. This must be the zID of your group partner. For individual submissions, write your own zID.

5 Submission

Only one member of the pair should submit. Work out who will submit ahead of time. Duplicate submissions are extremely annoying to sort out!

Submit your work by typing:

give cs3151 assn2 assignment2.txt assignment2.zip partner.txt

2022-08-05 Fri 16:47

Announcements RSS